<?php

namespace app\api\controller;

use app\BaseController;
use think\facade\View;
use think\facade\Config;
// use think\facade\Session;
use app\common\model\SystemAdmin;
use app\common\model\User;
use app\common\controller\Handle;
use app\common\model\Store;
use app\common\model\StoreInvite;
use app\common\model\FileLog;
use think\helper\Str;
use think\facade\Request;

class ApiStore extends ApiBase
{
    public function initialize()
    {
        parent::initialize();
        $this->user = new User;
        $this->FileLog = new FileLog;
        $this->Store = new Store;
        $this->StoreInvite = new StoreInvite;
    }


    // 修改商户信息
    public function updateStore()
    {
        // 判断店铺是否正常
        $is_store = $this->storeIsNormal($this->uid);

        if($is_store['code'] == 1){
            return json(['status' => 0, 'msg' =>$is_store['msg']]);
        }

        $store_id = $is_store['store_id'];

        $data = request()->post();

        if(empty($data['name'])){
            return json(['status' => 0, 'msg' =>"请上传店铺名称"]);
        }

        if(empty($data['logo'])){
            return json(['status' => 0, 'msg' =>"请上传店铺logo"]);
        }

        if(empty($data['introductory'])){
            return json(['status' => 0, 'msg' =>"请上传店铺简介"]);
        }

        if(empty($data['address'])){
            return json(['status' => 0, 'msg' =>"请上传店铺地址"]);
        }

        if(empty($data['tel'])){
            return json(['status' => 0, 'msg' =>"请上传店铺电话"]);
        }

        if(empty($data['weichat'])){
            return json(['status' => 0, 'msg' =>"请上传店铺微信"]);
        }

        if(empty($data['phone'])){
            return json(['status' => 0, 'msg' =>"请上传店铺联系电话"]);
        }

        if(empty($data['content'])){
            return json(['status' => 0, 'msg' =>"请上传店铺内容图文"]);
        }

        $save = [
            "name"=>$data['name'],
            "logo"=>$data['logo'],
            "introductory"=>$data['introductory'],
            "address"=>$data['address'],
            "tel"=>$data['tel'],
            "weichat"=>$data['weichat'],
            "phone"=>$data['phone'],
            "content"=>$data['content'],
        ];

        if(!empty($save['content'])){
            $save['content'] = str_replace($domain."/api_store","api_store",$list['content']);
        }


        $res = $this->Store->where(['id'=>$store_id])->update($save);
        return json(['status' => 1, 'msg' => '保存成功']);
  
    }


    // 店铺详情
    public function getStore()
    {
        
        // 存储空间对应的域名
        $domain = config('sysconfig.qiniu_domain');

        // 判断店铺是否正常
        $is_store = $this->storeIsNormal($this->uid);

        if($is_store['code'] == 1){
            return json(['status' => 0, 'msg' =>$is_store['msg']]);
        }

        $store_id = $is_store['store_id'];

        $list = $this->Store->getOne(['id' =>$store_id]);


        if(!empty($list['content'])){
            $list['content'] = str_replace("api_store",$domain."/api_store",$list['content']);
        }

        // if(!empty($list['logo'])){
        //     $list['logo'] = $domain."/".$list['logo'];
        // }


        // if(!empty($list['weichat'])){
        //     $list['weichat'] = $domain."/".$list['weichat'];
        // }
        
        return json(['status'=> 1,'data'=>$list]);
    }

    // 获取店铺分享码
   public function storeShare()
   {
        // 判断店铺是否正常
        $is_store = $this->storeIsNormal($this->uid);

        if($is_store['code'] == 1){
            return json(['status' => 0, 'msg' =>$is_store['msg']]);
        }

        $store_id = $is_store['store_id'];

         // 生成 UUID 码
        $uuid = uniqid();

        $add = [
            "store_id"=>$store_id,
            "number"=>$uuid,
        ];

        

        $res = $this->StoreInvite->create($add);
        
        return json(['status' => 1, 'msg' => '操作成功',"uuid"=>$uuid]);
   }


   // 入驻店铺
   public function storeInvite()
   {
        $data = request()->post();

        if(empty($data['number'])){
            return json(['status' => 0, 'msg' =>"请上传邀请码"]);
        }

        $list = $this->StoreInvite->getOne(['number'=>$data['number'],"status"=>0]);

        if(empty($list)){
            return json(['status' => 0, 'msg' =>"邀请码错误"]);
        }

        $res =  $this->StoreInvite->where(['id'=>$list['id']])->update(['status'=>1]);


        $reslut = $this->user->where(['id'=>$this->uid])->update(['store_id'=>$list['store_id'],"identity"=>2]);

        return json(['status' => 1, 'msg' => '入驻成功']);
        
   }

   // 员工列表
   public function staffList()
   {
        // 判断店铺是否正常
        $is_store = $this->storeIsNormal($this->uid);

        if($is_store['code'] == 1){
            return json(['status' => 0, 'msg' =>$is_store['msg']]);
        }

        $store_id = $is_store['store_id'];

        $list_user = $this->user->getOne(['id'=>$this->uid]);

        if($list_user['identity'] != 1){
            return json(['status' => 0, 'msg' =>"只有店主身份才能看员工列表"]);
        }

        if(empty($data['limit'])){
            $data['limit'] = 10;
        }

        if(empty($data['page'])){
            $data['page'] = 1;
        }

        $list = $this->user->getPagelist(['store_id'=>$store_id,"identity"=>2]);
        $count = $this->user->countRows(['store_id'=>$store_id,"identity"=>2]);

        $pages = ceil($count/$data['limit']);
        

        return json(['status'=> 1,'data'=>$list,'pages'=>$pages,"count"=>$count]);

   }



    

    // 上传商户图片或者视频
    public function addFile()
    {
        $file = request()->file('file');

        if (!$file) {
            return ['status' => 0, 'msg' => '上传失败，图片不存在'];
        }


        // 获取文件原始扩展名
        $extension = $file->extension();

        $hand = new Handle();

        $dirname = "api_store";

        $savename = $hand->qiniuImg("file", $dirname);

        $add['file_name'] = $savename['fileName'];
        $add['upload_type'] = 2;
        $add['file_path'] = $savename['url'];
        $add['file_type'] = $extension;
        $add['ip'] = Request::ip();
        $add['add_time'] = time();
        $add['user_id'] = $this->uid;
        
        $res = $this->FileLog->create($add);
        $fileLogId = $res->id;
        $savename['file_id'] = $fileLogId;

        return  json($savename);
    }

  

   
    
}
